package com.snopy.list;

/**
 * @author snopy
 * @description:线性表
 * 成员变量：
 * 1.private T[] eles：存储元素的数组
 * 2.private int N:当前线性表的长度
 * 成员方法：
 * 1.public void clear()：空置线性表
 * 2.public boolean isEmpty()：判断线性表是否为空，是返回true，否返回false
 * 3.public int length():获取线性表中元素的个数
 * 4.public T get(int i):读取并返回线性表中的第i个元素的值
 * 5.public void insert(int i,T t)：在线性表的第i个元素之前插入一个值为t的数据元素。
 * 6.public void insert(T t):向线性表中添加一个元素t
 * 7.public T remove(int i):删除并返回线性表中第i个数据元素。
 * 8.public int indexOf(T t):返回线性表中首次出现的指定的数据元素的位序号，若不存在，则返回-1。
 * @classname SequenceList
 * @date 2020/11/02 12:26
 * @email 77912204@qq.com
 */
public class SequenceList <T>{

    private int capaticy;
    /**
     *存储元素的数组
     */
    private T[] element;
    /**
     * 当前线性表的长度
     */
    private int length;
    public SequenceList() {
    }

    public SequenceList(int capaticy) {
        this.capaticy = capaticy;
    }
    /**
      *@desciption:空置线性表
      *@pararm:
      *@return:
      *@author: snopy
      *@date:2020/11/2 12:30
      */
    
    public void clear(){
        this.element = null;
        this.length = 0;
    }
    /**
      *@desciption:判断线性表是否为空，是返回true，否返回false
      *@pararm:
      *@return:
      *@author: snopy
      *@date:2020/11/2 13:00
      */
    public boolean isEmpty(){
        return this.element==null;
    }
    /**
      *@desciption:获取线性表中元素的个数
      *@pararm:
      *@return:
      *@author: snopy
      *@date:2020/11/2 13:01
      */
    public int length(){
        return this.length;
    }
    /**
      *@desciption:读取并返回线性表中的第i个元素的值
      *@pararm:
      *@return:
      *@author: snopy
      *@date:2020/11/2 13:04
      */
    public T get(int i) throws IndexOutOfBoundsException {
        if (i<0||i>this.length){
            throw  new IndexOutOfBoundsException();
        }
        return element[i];
    }
}
